package com.example.service.impl;

import com.example.dao.QRCodeCategoryDao;
import com.example.entity.QRCodeCategory;
import com.example.service.QRCodeCategoryService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 二维码分类服务实现类
 */
@Service("qrCodeCategoryService")
public class QRCodeCategoryServiceImpl implements QRCodeCategoryService {
    @Resource
    private QRCodeCategoryDao qrCodeCategoryDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public QRCodeCategory queryById(Long id) {
        return this.qrCodeCategoryDao.queryById(id);
    }

    /**
     * 分页查询
     *
     * @param qrCodeCategory 筛选条件
     * @param offset         查询起始位置
     * @param limit          查询条数
     * @return 查询结果
     */
    @Override
    public List<QRCodeCategory> queryAllByLimit(QRCodeCategory qrCodeCategory, int offset, int limit) {
        return this.qrCodeCategoryDao.queryAllByLimit(qrCodeCategory, offset, limit);
    }

    /**
     * 查询所有分类
     *
     * @return 分类列表
     */
    @Override
    public List<QRCodeCategory> queryAll() {
        return this.qrCodeCategoryDao.queryAll();
    }

    /**
     * 查询启用的分类
     *
     * @return 分类列表
     */
    @Override
    public List<QRCodeCategory> queryEnabled() {
        return this.qrCodeCategoryDao.queryEnabled();
    }

    /**
     * 统计总行数
     *
     * @param qrCodeCategory 查询条件
     * @return 总行数
     */
    @Override
    public long count(QRCodeCategory qrCodeCategory) {
        return this.qrCodeCategoryDao.count(qrCodeCategory);
    }

    /**
     * 新增数据
     *
     * @param qrCodeCategory 实例对象
     * @return 实例对象
     */
    @Override
    public QRCodeCategory insert(QRCodeCategory qrCodeCategory) {
        Date now = new Date();
        qrCodeCategory.setCreateTime(now);
        qrCodeCategory.setUpdateTime(now);
        if (qrCodeCategory.getStatus() == null) {
            qrCodeCategory.setStatus(1);
        }
        if (qrCodeCategory.getSort() == null) {
            qrCodeCategory.setSort(0);
        }
        this.qrCodeCategoryDao.insert(qrCodeCategory);
        return qrCodeCategory;
    }

    /**
     * 修改数据
     *
     * @param qrCodeCategory 实例对象
     * @return 实例对象
     */
    @Override
    public QRCodeCategory update(QRCodeCategory qrCodeCategory) {
        qrCodeCategory.setUpdateTime(new Date());
        this.qrCodeCategoryDao.update(qrCodeCategory);
        return this.queryById(qrCodeCategory.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Long id) {
        return this.qrCodeCategoryDao.deleteById(id) > 0;
    }
}